<?php
#WYJATKI 3  brak obslugi wyjatkow stosowanie zwyklych ifow
#

 #klsa zawierajaca ryzykowna metode np. pobieranie z bazy zglaszajace wyjatek
class Generic
  {
      #Ryzykowna metoda CIALO  -  zglaszajaca wyjatek
      public function testValue($someOtherVar)
      {
          if($someOtherVar > 30) {
              //throw new CustomException('podana wartosc nie moze byc wieksza od 3!',2);
              echo 'Wykonanie zapisu do bazy wyniku + wyslanie majla blad krytyczny operacje';
              return $Blad='podana wartosc nie moze byc wieksza od 3!';
          } 
          if($someOtherVar > 3) {
              //throw new CustomException('podana wartosc nie moze byc wieksza od 3!',1);
              echo 'Blad klasy 1 tylko dodanie logu';
              return $blad='podana wartosc nie moze byc wieksza od 3!';
          }
          else {
              $this->result = 5 + $someOtherVar;
              echo $this->result . '<br />';
          return false;
          }
          
      }
  }

  /*
  #moja klasa wyjatkow rozszeza Exeption   ona przechoduje cala obsluge zdarzen logike obslugi zdarzen
  class CustomException extends Exception
  {
      public function logError()
      {
            // Send notification through the server log
            if($this->getCode() == 1){
                echo $this->getMessage();
                echo '<br>Bład klasy 1 tylko wypisanie jego.<br>';
                #Moja wykonanie bledu takie jakie bende chcial np zapis do bazy wyslanie majla ect
            }
            // Notify administrator by email
            else if($this->getCode() == 2){
                echo($this->getMessage());
            echo('<br>blad klssy 2 zapis do bazy + wyslanie majla');
            }
      }
}
    */
    
//Wywolanie ryzykownej metody
  function test()
  {
            $gen = new Generic();
            $wyn=$gen->testValue(2);    //jezeli poda arg <3 spoko
            
            //odpowiednik bloku catch
            if($wyn) echo $wyn; //wyswietlenie bledu
  }

test();

//WNIOSKI
// obsluga wyjatkow jest elegancka ale tak naprawde tylko tyle
// jest poukladane ze logika postepowania podczas oblugi bledow jest w kalsie WYJAYKU a nie "gdzie indziej"
//bo tak naprawde ta logika moze byc w samej metodzie ktora ja zglasza tak jak tu
//ograniczenie sie do return 'tresc bledu' + wywolanie odpowiedniej metody zapisujacej do bazy bledy.
//wywolanie metody zapisujacej do bazy mozna tez zrobic w metodzi zgloszeniowej wyjatek tzn w pseudo bloku catch
//tylko ze tu znowu wywolam metode zapisujaca do bazy a tak wywolam metode zglaszanego wyjatku i tylko tyle poprostu ladniej obiektowo

// w php nie da sie na wyjatkach przekazac wyjatek dalej pominac go . stosujac ify mozna to zrobic :)
// w javie jest throws ze metoda zwraca watek 

?>